package com.escom.dao;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;

import com.escom.entidad.ArritmiaVO;
import com.escom.entidad.ConsultaVO;
import com.escom.entidad.DiagnosticoVO;
import com.escom.entidad.HospitalVO;
import com.escom.utils.Constantes;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by Carlos on 17/04/2014.
 */
public class ConsultaDAO {

    private Context context;

    public ConsultaDAO(Context context){
        this.context = context;
    }

    public void createMultipleConsulta(ConsultaVO[] arrayConsulta){
        DataBaseManager dataBaseManager = new DataBaseManager(context);
        SQLiteDatabase sqLiteDatabase = dataBaseManager.getWritableDatabase();
        if(sqLiteDatabase != null) {
            for (int i = 0; i < arrayConsulta.length; i++) {
                ConsultaVO consulta = arrayConsulta[i];
                //Log.d(Constantes.LOG_ID, this.getClass().getName() + " Objeto Consulta: " + consulta.toString());
                ContentValues contentValues = new ContentValues();
                contentValues.put(DataBaseManager.ID_CONSULTAS, consulta.getIdConsulta());
                contentValues.put(DataBaseManager.ID_HOSPITAL, consulta.getHospital().getIdHospital());
                DiagnosticoVO diagnostico = consulta.getDiagnostico();
                if(diagnostico != null) {
                    contentValues.put(DataBaseManager.ID_DIAGNOSTICO, consulta.getDiagnostico().getIdDiagnostico());
                }
                contentValues.put(DataBaseManager.ID_PACIENTE_MEDICO, consulta.getIdPacienteMedico());
                contentValues.put(DataBaseManager.FECHA_INICIO, consulta.getFechaInicio());
                contentValues.put(DataBaseManager.FECHA_FINAL, consulta.getFechaFinal());
                contentValues.put(DataBaseManager.DETALLES, consulta.getDetalles());
                try {
                    sqLiteDatabase.insertOrThrow(DataBaseManager.HLC_CONSULTAS_TAB, null, contentValues);
                } catch (android.database.sqlite.SQLiteConstraintException exSQL) {
                    Log.d(Constantes.LOG_ID, this.getClass().getName() + " Update(Error administrado)");
                    sqLiteDatabase.update(DataBaseManager.HLC_CONSULTAS_TAB, contentValues,
                            DataBaseManager.ID_CONSULTAS + " = " + consulta.getIdConsulta(), null);
                }
            }
        }
    }

    public List<ConsultaVO> retrieveConsultaByIdPaciente(String idPaciente) {
        Log.d("Logger HospitalDAO", "retrieveHospital");
        DataBaseManager dataBaseManager = new DataBaseManager(this.context);
        SQLiteDatabase sqLiteDatabase = dataBaseManager.getWritableDatabase();
        Cursor cursor = sqLiteDatabase.rawQuery("SELECT fecha_inicio, fecha_final, detalles, hospital, tipo_arritmia "
                +" FROM hlc_consultas_tab co LEFT JOIN hlc_diagnostico_tab di "
                +"ON co.id_diagnostico = di.id_diagnostico "
                +"LEFT JOIN hlc_arritmia_cat ar ON di.id_arritmia = ar.id_arritmia , "
                +"hlc_hospital_cat ho, hlc_paciente_medico_tab pm "
                +"WHERE co.id_hospital = ho.id_hospital "
                +"AND co.id_paciente_medico = pm.id_paciente_medico "
                +"AND pm.id_paciente = ?",new String[]{idPaciente});

        List<ConsultaVO> retrieveConsulta = new ArrayList<ConsultaVO>();
        if (cursor.moveToFirst()) {
            do {
                ConsultaVO consulta = new ConsultaVO();
                HospitalVO hospital = new HospitalVO();
                ArritmiaVO arritmia = new ArritmiaVO();
                consulta.setFechaInicio(cursor.getString(0));
                consulta.setFechaFinal(cursor.getString(1));
                consulta.setDetalles(cursor.getString(2));
                hospital.setHospital(cursor.getString(3));
                arritmia.setTipoArritmia(cursor.getString(4));
                consulta.setHospital(hospital);
                retrieveConsulta.add(consulta);
            }while (cursor.moveToNext());

        }else{
            Log.d("Logger HospitalDAO", "NULO");
        }
        return retrieveConsulta;
    }
}
